from django.conf import settings
from fdfs_client.client import Fdfs_client
from rest_framework.permissions import IsAdminUser
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet

from goods.models import SKUImage,SKU,SPU
from meiduo_admin.serialziers.images import ImagesSerialzier,SKUSerialzier
from meiduo_admin.utils import PageNum


'''
商品规格的增删改查
'''
class ImagesView(ModelViewSet):
    #指定查询集
    queryset = SKUImage.objects.all()
    #指定序列化器
    serializer_class = ImagesSerialzier
    #指定分页器
    pagination_class=PageNum
    # 指定分页器
    permission_classes = [IsAdminUser]

    #获取sku商品
    def simple(self,request):
        #查询所有sku商品信息
        sku=SKU.objects.all()
        # 创建序列化器
        ser=SKUSerialzier(sku,many=True)
        #返回数据
        return Response(ser.data)
    #改写图片保存的方法
    def create(self, request, *args, **kwargs):
        #1、获取前段数据
        data=request.data
        # 2、验证数据
        ser=self.get_serializer(data=data)
        ser.is_valid()
        # 3、建立fastdfs的客户端
        client=Fdfs_client(settings.FASTDFS_PATH)
        file=request.FILES.get('images')

        # 4、上传图片
        res=client.upload_by_buffer(file.read())
        # 5、判断是否上传成功
        if res['Status'] != 'Upload successed':
            return  Response({'error':'图片上传失败'})
        # 6、保存图片表
        img=SKUImage.objects.create(sku=ser.validated_data['sku'],image=res['Remote file_id'])
        ser.save()
        # 7、返回保存后的图片数据
        return Response({
            "id":img.id,
            "sku":img.sku_id,
            "image":img.image.url
        })



